package com.shangma.cn;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.context.annotation.ImportResource;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.transaction.annotation.EnableTransactionManagement;

/**
 * 开发者：辉哥
 * 特点： 辉哥很帅
 * 开发时间：2021/6/22 11:01
 * 文件说明：
 */
@SpringBootApplication
@EnableTransactionManagement
@MapperScan(basePackages = {"com.shangma.cn.mapper"})
@EnableScheduling// 开启调度 表示想容器中添加
@EnableAsync//开启异步任务（启动线程池） 默认8个
@EnableAspectJAutoProxy
public class MyApplication {

    /*表单校验：
            在数据修改的时候 （新增 修改）时  前端提交的数据 要满足我们后台预定的规则
            如果满足规则 则校验通过 则直接做新增或者修改  如果不满足规则 则直接告诉前端
            你需要修改你的提交信息 此时是不做添加和修改的 什么时候前端把数据修改的能被java
            校验成功 才能做添加或者修改

      实际开发中
            前端校验 =>前端开发工程师的事
            后端校验=》是我们要做的事情
                一般的话会校验
                        非空  “sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss”
                        必须为空
                        手机号
                        邮箱
                        链接
                        数字
                        在某某个范围内 （年龄） 0-100
                        在你指定的值中间去 性别 （1: 男  4：女  8：太监）
                        时间：
                            时间必须得是以前的时间  //2020-10-10    2022-10-10
                            时间必须得是以后的时候  未来规划  语句1998年 第一轮融资  2021

                        长度校验：

                        自定义校验： 用户名 密码 昵称


                   传统的校验
                        StringUtils.isEmpty

                        Matcher   手机号  邮箱   链接 自定义校验

                        数字 数字转换  abc
                      在某某个范围内  0<a && a <100
                      长度校验
                       string.lenght

                        时间必须得是以前的时间
                                变成时间戳校验


    *
    *
    *  表单校验的库
            Hibernate-validator 专门做表单校验的  非常简单 这个库当中 提供了大量的注解帮我们校验功能

        第一种用法：
                手动依赖这个包
                    Hibernate-validator

         第二种用户：
            springBoot项目 去找起步依赖
                    1： 依赖起步依赖 （springBoot start中有 ）
    *
    *

     分组校验：
            同一个字段 在不同的情况下 满足不同的规则 我们要指定不同情况的规则
    *
    *
    * */

    public static void main(String[] args) {

        SpringApplication.run(MyApplication.class, args);
    }


    @Bean
    public BCryptPasswordEncoder bCryptPasswordEncoder() {
        return new BCryptPasswordEncoder();
    }
}
